#include <iostream>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <functional>
#include <vector>
using namespace std;
using func_t = std::function<void()>;
int gcount = 0;
vector<func_t> gfuncs;
void hanlder(int signo)
{
  for (auto &f : gfuncs)
  {
    f();
  }
  std::cout << "gcount : " << gcount << std::endl;
  int n = alarm(1); // 重设闹钟，会返回上⼀次闹钟的剩余时间
  std::cout << "剩余时间 : " << n << std::endl;
}
void handlerSig(int sig)
{
  cout << "我是： " << getpid() << "获取到一个信号:  " << sig << endl;
}
int main()
{
  alarm(1);
  signal(SIGALRM, hanlder);
  while (1)
  {
    pause();
    cout << "我醒了。。。" << endl;
    gcount++;
  }
  return 0;
}
// int main()
// {
//   cout << "我是进程： " << getpid() << endl;
//   signal(2, handlerSig);
//   while(1)
//   {
//     sleep(1);
//     raise(2);
//   }
//   // while (1)
//   // {
//   //   std::cout << "I am a process, I am waiting signal!" << std::endl;
//   //   sleep(1);
//   // }
//   // for(int i=1;i<32;i++)
//   // signal(i,handlerSig);
//   // int cnt=1;
//   // alarm(1);
//   // while(true)
//   // {
//   //     cout<<cnt++<<endl;
//   // }
//   return 0;
// }